<!DOCTYPE HTML>

<html lang="en">
<head>

<title>UrlUtils (spring-security-docs 5.6.3 API)</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<link rel="stylesheet" type="text/css" href="../../../../../stylesheet.css" title="Style">
<link rel="stylesheet" type="text/css" href="../../../../../jquery/jquery-ui.css" title="Style">
<script type="text/javascript" src="../../../../../script.js"></script>
<script type="text/javascript" src="../../../../../jquery/jszip/dist/jszip.min.js"></script>
<script type="text/javascript" src="../../../../../jquery/jszip-utils/dist/jszip-utils.min.js"></script>
<!--[if IE]>
<script type="text/javascript" src="../../../../../jquery/jszip-utils/dist/jszip-utils-ie.min.js"></script>
<![endif]-->
<script type="text/javascript" src="../../../../../jquery/jquery-3.5.1.js"></script>
<script type="text/javascript" src="../../../../../jquery/jquery-ui.js"></script>
</head>
<body>
<script type="text/javascript"><!--
    try {
        if (location.href.indexOf('is-external=true') == -1) {
            parent.document.title="UrlUtils (spring-security-docs 5.6.3 API)";
        }
    }
    catch(err) {
    }
//-->
var data = {"i0":9,"i1":9,"i2":9,"i3":9,"i4":9};
var tabs = {65535:["t0","All Methods"],1:["t1","Static Methods"],8:["t4","Concrete Methods"]};
var altColor = "altColor";
var rowColor = "rowColor";
var tableTab = "tableTab";
var activeTableTab = "activeTableTab";
var pathtoroot = "../../../../../";
var useModuleDirectories = true;
loadScripts(document, 'script');</script>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
<header role="banner">
<nav role="navigation">
<div class="fixedNav">

<div class="topNav"><a id="navbar.top">

</a>
<div class="skipNav"><a href="UrlUtils.html#skip.navbar.top" title="Skip navigation links">Skip navigation links</a></div>
<a id="navbar.top.firstrow">

</a>
<ul class="navList" title="Navigation">
<li><a href="../../../../../index.html">Overview</a></li>
<li><a href="package-summary.html">Package</a></li>
<li class="navBarCell1Rev">Class</li>
<li><a href="package-tree.html">Tree</a></li>
<li><a href="../../../../../deprecated-list.html">Deprecated</a></li>
<li><a href="../../../../../index-all.html">Index</a></li>
<li><a href="../../../../../help-doc.html">Help</a></li>
</ul>
</div>
<div class="subNav">
<ul class="navList" id="allclasses_navbar_top">
<li><a href="../../../../../allclasses.html">All&nbsp;Classes</a></li>
</ul>
<ul class="navListSearch">
<li><label for="search">SEARCH:</label>
<input type="text" id="search" value="search" disabled="disabled">
<input type="reset" id="reset" value="reset" disabled="disabled">
</li>
</ul>
<div>
<script type="text/javascript"><!--
  allClassesLink = document.getElementById("allclasses_navbar_top");
  if(window==top) {
    allClassesLink.style.display = "block";
  }
  else {
    allClassesLink.style.display = "none";
  }
  //-->
</script>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
</div>
<div>
<ul class="subNavList">
<li>Summary:&nbsp;</li>
<li>Nested&nbsp;|&nbsp;</li>
<li>Field&nbsp;|&nbsp;</li>
<li>Constr&nbsp;|&nbsp;</li>
<li><a href="UrlUtils.html#method.summary">Method</a></li>
</ul>
<ul class="subNavList">
<li>Detail:&nbsp;</li>
<li>Field&nbsp;|&nbsp;</li>
<li>Constr&nbsp;|&nbsp;</li>
<li><a href="UrlUtils.html#method.detail">Method</a></li>
</ul>
</div>
<a id="skip.navbar.top">

</a></div>

</div>
<div class="navPadding">&nbsp;</div>
<script type="text/javascript"><!--
$('.navPadding').css('padding-top', $('.fixedNav').css("height"));
//-->
</script>
</nav>
</header>

<main role="main">
<div class="header">
<div class="subTitle"><span class="packageLabelInType">Package</span>&nbsp;<a href="package-summary.html">org.springframework.security.web.util</a></div>
<h2 title="Class UrlUtils" class="title">Class UrlUtils</h2>
</div>
<div class="contentContainer">
<ul class="inheritance">
<li>java.lang.Object</li>
<li>
<ul class="inheritance">
<li>org.springframework.security.web.util.UrlUtils</li>
</ul>
</li>
</ul>
<div class="description">
<ul class="blockList">
<li class="blockList">
<hr>
<pre>public final class <span class="typeNameLabel">UrlUtils</span>
extends java.lang.Object</pre>
<div class="block">Provides static methods for composing URLs.
<p>
Placed into a separate class for visibility, so that changes to URL formatting
conventions will affect all users.</div>
</li>
</ul>
</div>
<div class="summary">
<ul class="blockList">
<li class="blockList">

<section role="region">
<ul class="blockList">
<li class="blockList"><a id="method.summary">

</a>
<h3>Method Summary</h3>
<table class="memberSummary">
<caption><span id="t0" class="activeTableTab"><span>All Methods</span><span class="tabEnd">&nbsp;</span></span><span id="t1" class="tableTab"><span><a href="javascript:show(1);">Static Methods</a></span><span class="tabEnd">&nbsp;</span></span><span id="t4" class="tableTab"><span><a href="javascript:show(8);">Concrete Methods</a></span><span class="tabEnd">&nbsp;</span></span></caption>
<tr>
<th class="colFirst" scope="col">Modifier and Type</th>
<th class="colSecond" scope="col">Method</th>
<th class="colLast" scope="col">Description</th>
</tr>
<tr id="i0" class="altColor">
<td class="colFirst"><code>static java.lang.String</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="UrlUtils.html#buildFullRequestUrl(java.lang.String,java.lang.String,int,java.lang.String,java.lang.String)">buildFullRequestUrl</a></span>&#8203;(java.lang.String&nbsp;scheme,
java.lang.String&nbsp;serverName,
int&nbsp;serverPort,
java.lang.String&nbsp;requestURI,
java.lang.String&nbsp;queryString)</code></th>
<td class="colLast">
<div class="block">Obtains the full URL the client used to make the request.</div>
</td>
</tr>
<tr id="i1" class="rowColor">
<td class="colFirst"><code>static java.lang.String</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="UrlUtils.html#buildFullRequestUrl(javax.servlet.http.HttpServletRequest)">buildFullRequestUrl</a></span>&#8203;(javax.servlet.http.HttpServletRequest&nbsp;r)</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i2" class="altColor">
<td class="colFirst"><code>static java.lang.String</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="UrlUtils.html#buildRequestUrl(javax.servlet.http.HttpServletRequest)">buildRequestUrl</a></span>&#8203;(javax.servlet.http.HttpServletRequest&nbsp;r)</code></th>
<td class="colLast">
<div class="block">Obtains the web application-specific fragment of the request URL.</div>
</td>
</tr>
<tr id="i3" class="rowColor">
<td class="colFirst"><code>static boolean</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="UrlUtils.html#isAbsoluteUrl(java.lang.String)">isAbsoluteUrl</a></span>&#8203;(java.lang.String&nbsp;url)</code></th>
<td class="colLast">
<div class="block">Decides if a URL is absolute based on whether it contains a valid scheme name, as
defined in RFC 1738.</div>
</td>
</tr>
<tr id="i4" class="altColor">
<td class="colFirst"><code>static boolean</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="UrlUtils.html#isValidRedirectUrl(java.lang.String)">isValidRedirectUrl</a></span>&#8203;(java.lang.String&nbsp;url)</code></th>
<td class="colLast">
<div class="block">Returns true if the supplied URL starts with a "/" or is absolute.</div>
</td>
</tr>
</table>
<ul class="blockList">
<li class="blockList"><a id="methods.inherited.from.class.java.lang.Object">

</a>
<h3>Methods inherited from class&nbsp;java.lang.Object</h3>
<code>clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait</code></li>
</ul>
</li>
</ul>
</section>
</li>
</ul>
</div>
<div class="details">
<ul class="blockList">
<li class="blockList">

<section role="region">
<ul class="blockList">
<li class="blockList"><a id="method.detail">

</a>
<h3>Method Detail</h3>
<a id="buildFullRequestUrl(javax.servlet.http.HttpServletRequest)">

</a>
<ul class="blockList">
<li class="blockList">
<h4>buildFullRequestUrl</h4>
<pre class="methodSignature">public static&nbsp;java.lang.String&nbsp;buildFullRequestUrl&#8203;(javax.servlet.http.HttpServletRequest&nbsp;r)</pre>
</li>
</ul>
<a id="buildFullRequestUrl(java.lang.String,java.lang.String,int,java.lang.String,java.lang.String)">

</a>
<ul class="blockList">
<li class="blockList">
<h4>buildFullRequestUrl</h4>
<pre class="methodSignature">public static&nbsp;java.lang.String&nbsp;buildFullRequestUrl&#8203;(java.lang.String&nbsp;scheme,
                                                   java.lang.String&nbsp;serverName,
                                                   int&nbsp;serverPort,
                                                   java.lang.String&nbsp;requestURI,
                                                   java.lang.String&nbsp;queryString)</pre>
<div class="block">Obtains the full URL the client used to make the request.
<p>
Note that the server port will not be shown if it is the default server port for
HTTP or HTTPS (80 and 443 respectively).</div>
<dl>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>the full URL, suitable for redirects (not decoded).</dd>
</dl>
</li>
</ul>
<a id="buildRequestUrl(javax.servlet.http.HttpServletRequest)">

</a>
<ul class="blockList">
<li class="blockList">
<h4>buildRequestUrl</h4>
<pre class="methodSignature">public static&nbsp;java.lang.String&nbsp;buildRequestUrl&#8203;(javax.servlet.http.HttpServletRequest&nbsp;r)</pre>
<div class="block">Obtains the web application-specific fragment of the request URL.
<p>
Under normal spec conditions,
<pre> requestURI = contextPath + servletPath + pathInfo
 </pre>
But the requestURI is not decoded, whereas the servletPath and pathInfo are
(SEC-1255). This method is typically used to return a URL for matching against
secured paths, hence the decoded form is used in preference to the requestURI for
building the returned value. But this method may also be called using dummy request
objects which just have the requestURI and contextPatth set, for example, so it
will fall back to using those.</div>
<dl>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>the decoded URL, excluding any server name, context path or servlet path</dd>
</dl>
</li>
</ul>
<a id="isValidRedirectUrl(java.lang.String)">

</a>
<ul class="blockList">
<li class="blockList">
<h4>isValidRedirectUrl</h4>
<pre class="methodSignature">public static&nbsp;boolean&nbsp;isValidRedirectUrl&#8203;(java.lang.String&nbsp;url)</pre>
<div class="block">Returns true if the supplied URL starts with a "/" or is absolute.</div>
</li>
</ul>
<a id="isAbsoluteUrl(java.lang.String)">

</a>
<ul class="blockListLast">
<li class="blockList">
<h4>isAbsoluteUrl</h4>
<pre class="methodSignature">public static&nbsp;boolean&nbsp;isAbsoluteUrl&#8203;(java.lang.String&nbsp;url)</pre>
<div class="block">Decides if a URL is absolute based on whether it contains a valid scheme name, as
defined in RFC 1738.</div>
</li>
</ul>
</li>
</ul>
</section>
</li>
</ul>
</div>
</div>
</main>

<footer role="contentinfo">
<nav role="navigation">

<div class="bottomNav"><a id="navbar.bottom">

</a>
<div class="skipNav"><a href="UrlUtils.html#skip.navbar.bottom" title="Skip navigation links">Skip navigation links</a></div>
<a id="navbar.bottom.firstrow">

</a>
<ul class="navList" title="Navigation">
<li><a href="../../../../../index.html">Overview</a></li>
<li><a href="package-summary.html">Package</a></li>
<li class="navBarCell1Rev">Class</li>
<li><a href="package-tree.html">Tree</a></li>
<li><a href="../../../../../deprecated-list.html">Deprecated</a></li>
<li><a href="../../../../../index-all.html">Index</a></li>
<li><a href="../../../../../help-doc.html">Help</a></li>
</ul>
</div>
<div class="subNav">
<ul class="navList" id="allclasses_navbar_bottom">
<li><a href="../../../../../allclasses.html">All&nbsp;Classes</a></li>
</ul>
<div>
<script type="text/javascript"><!--
  allClassesLink = document.getElementById("allclasses_navbar_bottom");
  if(window==top) {
    allClassesLink.style.display = "block";
  }
  else {
    allClassesLink.style.display = "none";
  }
  //-->
</script>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
</div>
<div>
<ul class="subNavList">
<li>Summary:&nbsp;</li>
<li>Nested&nbsp;|&nbsp;</li>
<li>Field&nbsp;|&nbsp;</li>
<li>Constr&nbsp;|&nbsp;</li>
<li><a href="UrlUtils.html#method.summary">Method</a></li>
</ul>
<ul class="subNavList">
<li>Detail:&nbsp;</li>
<li>Field&nbsp;|&nbsp;</li>
<li>Constr&nbsp;|&nbsp;</li>
<li><a href="UrlUtils.html#method.detail">Method</a></li>
</ul>
</div>
<a id="skip.navbar.bottom">

</a></div>

</nav>
</footer>
<script>if (window.parent == window) {(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o), m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)})(window,document,'script','//www.google-analytics.com/analytics.js','ga');ga('create', 'UA-2728886-23', 'auto', {'siteSpeedSampleRate': 100});ga('send', 'pageview');}</script><script defer src="https://static.cloudflareinsights.com/beacon.min.js/v652eace1692a40cfa3763df669d7439c1639079717194" integrity="sha512-Gi7xpJR8tSkrpF7aordPZQlW2DLtzUlZcumS8dMQjwDHEnw9I7ZLyiOj/6tZStRBGtGgN6ceN6cMH8z7etPGlw==" data-cf-beacon='{"rayId":"7040f37fecc897cf","token":"bffcb8a918ae4755926f76178bfbd26b","version":"2021.12.0","si":100}' crossorigin="anonymous"></script>
</body>
</html>
